/*
 * Copyright (c) 2018.
 * http://www.ulabcare.com
 */

package com.mt.roll.upms.service;

import com.mt.roll.core.params.EnabledParam;
import com.mt.roll.core.params.IdListParam;
import com.mt.roll.core.params.IdParam;
import com.mt.roll.core.vo.IdListVo;
import com.mt.roll.core.vo.IdVo;
import com.mt.roll.core.vo.PageVo;
import com.mt.roll.core.vo.R;
import com.mt.roll.upms.params.ServiceParam;
import com.mt.roll.upms.params.ServiceQueryParam;
import com.mt.roll.upms.vo.ServiceVo;

import java.util.List;

/**
 * 微服务服务接口
 *
 * @author jiff
 * @date 2018/11/14
 * @since 1.0
 */
public interface MicroServiceService {

    /**
     * 获取服务
     *
     * @param idParam 主键参数
     * @return 服务
     */
    R<ServiceVo> get(IdParam idParam);

    /**
     * 获取服务列表
     *
     * @param serviceQueryParam 服务查询参数
     * @return 服务列表
     */
    R<List<ServiceVo>> list(ServiceQueryParam serviceQueryParam);

    /**
     * 获取服务分页列表
     *
     * @param serviceQueryParam 服务查询参数
     * @return 服务分页列表
     */
    R<PageVo<ServiceVo>> page(ServiceQueryParam serviceQueryParam);

    /**
     * 新增服务
     *
     * @param serviceParam 服务参数
     * @return 主键
     */
    R<IdVo> add(ServiceParam serviceParam);

    /**
     * 更新服务
     *
     * @param serviceParam 服务参数
     * @return 主键
     */
    R<IdVo> update(ServiceParam serviceParam);

    /**
     * 启用停用
     *
     * @param enabledParam 启停参数
     * @return 主键
     */
    R<IdVo> enabled(EnabledParam enabledParam);

    /**
     * 删除服务
     *
     * @param idParam 主键参数
     * @return 主键
     */
    R<IdVo> delete(IdParam idParam);

    /**
     * 批量删除服务
     *
     * @param idListParam 主键列表参数
     * @return 主键列表
     */
    R<IdListVo> delete(IdListParam idListParam);
}
